﻿Imports CrystalDecisions.CrystalReports.Engine

Public Class frmPowiazanieMaterialu

    Private mvarChanged As Boolean
    Private mvarDbHolder As clsDataBase
    Private mvarUzytkownik As clsUzytkownik
    Private mvarZlecenie As clsInhTrZlecenie
    Private mvarPozycjaZlecenia As clsInhTrPozycjaZlecenia
    Private mvarMaterialProdukcyjny As clsInhTrMaterialProdukcyjny
    Private mvarMaterialProdukcyjnyId As Integer
    Private mvarWyznInformacje As Boolean

    Public Sub New()
        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = clsUzytkownik.Instance()


        PobierzWszystkieGatunkiMaterialu()
        PobierzWszystkiePakowania()
        Wyczysc()

        Me.Size = New Size(913, 376)
    End Sub

    Public Sub New(ByVal schematId As Integer)
        Me.New()
        txtNumerSchematu.Text = schematId.ToString()
        SzukajDanych()
        cmbWytop.Focus()
    End Sub

    Private Sub PobierzWszystkieGatunkiMaterialu()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsGatunek.PobierzWszystkieGatunki(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbGatunek.Items.Add(New clsGatunek(CInt(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa_ang")), "", lvarRow("nazwa_ang"))), CStr(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa"))), CStr(IIf(IsDBNull(lvarRow("nazwa_niem")), "", lvarRow("nazwa_niem"))), CStr(IIf(IsDBNull(lvarRow("norma_wykonania")), "", lvarRow("norma_wykonania"))), CStr(IIf(IsDBNull(lvarRow("stop_id")), -1, lvarRow("stop_id")))))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkiePakowania()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsPakowanie.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbPakowanie.Items.Add(New clsPakowanie(CStr(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), String.Empty, lvarRow("nazwa")), String), CType(IIf(IsDBNull(lvarRow("cena")), 0, lvarRow("cena")), Double), CType(IIf(IsDBNull(lvarRow("waga")), 0, lvarRow("waga")), Double)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieWytopy(ByVal Id As Integer)

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsInhMaterial.PobierzWszystkieWytopyGatunku(mvarDbHolder, Id)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbWytop.Items.Add(New clsMaterial(CInt(lvarRow("id")), CInt(IIf(IsDBNull(lvarRow("gatunek_id")), -1, lvarRow("gatunek_id"))), CStr(IIf(IsDBNull(lvarRow("dostawca_id")), "", lvarRow("dostawca_id"))), CDate(IIf(IsDBNull(lvarRow("data_utworzenia")), "", lvarRow("data_utworzenia"))), CStr(IIf(IsDBNull(lvarRow("wymiar")), -1, lvarRow("wymiar"))), CStr(IIf(IsDBNull(lvarRow("wytop")), "", lvarRow("wytop"))), CStr(IIf(IsDBNull(lvarRow("wytrzymalosc")), -1, lvarRow("wytrzymalosc"))), CStr(IIf(IsDBNull(lvarRow("wydluzenie")), -1, lvarRow("wydluzenie"))), CStr(IIf(IsDBNull(lvarRow("ilosc")), -1, lvarRow("ilosc"))), CStr(IIf(IsDBNull(lvarRow("cena")), -1, lvarRow("cena"))), CStr(IIf(IsDBNull(lvarRow("waluta_id")), "", lvarRow("waluta_id")))))
            Next
        End If

    End Sub




    Private Sub Wyczysc()
        lblKlient.Text = String.Empty
        lblWymiar.Text = String.Empty
        lblIlosc.Text = String.Empty
        lblMaterial.Text = String.Empty
        lblUwagi.Text = String.Empty
        lblStatus.Text = String.Empty
        lblWydanaIlosc.Text = String.Empty
        dgvInformacje.Rows.Clear()
        WyczyscPowiazanieMaterialu()
        WyczyscInformacjeSchematu()
    End Sub

    Private Sub WyczyscPowiazanieMaterialu()
        'cmbGatunek.SelectedIndex = -1
        'cmbWytop.SelectedIndex = -1
        txtWymiarMin.Text = String.Empty
        txtWymiarMax.Text = String.Empty
        txtWytrzymalosc.Text = String.Empty
        txtIlosc.Text = String.Empty
        cmbPakowanie.SelectedIndex = -1
    End Sub

    Private Sub WyczyscInformacjeSchematu()
        txtInfKlient.Text = String.Empty
        txtInfTerminRealizacji.Text = String.Empty
        txtInfMaterial.Text = String.Empty
        txtInfSchematWymiar.Text = String.Empty
        txtInfSchematIlosc.Text = String.Empty
        txtInfTolDolna.Text = String.Empty
        txtInfTolGorna.Text = String.Empty
        txtInfWytrzymaloscMin.Text = String.Empty
        txtInfWytrzymaloscMax.Text = String.Empty
        txtInfWydluzenie.Text = String.Empty
        txtInfSzpula.Text = String.Empty
        txtInfMagazyn.Text = String.Empty
        txtInfUwagi.Text = String.Empty
        txtSchematIlosc.Text = String.Empty
        txtSchematUwagi.Text = String.Empty
        dgvSchematInformacje.Rows.Clear()
    End Sub

    Function SprawdzLiczbeZmiennoprzecinkowa(Liczba1 As String, Liczba2 As String, Liczba3 As String, Liczba4 As String) As Boolean

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) And Liczba2 <> String.Empty And IsNumeric(Liczba2) And Liczba3 <> String.Empty And IsNumeric(Liczba3) And Liczba4 <> String.Empty And IsNumeric(Liczba4) Then
            If CDbl(Liczba1) > 0 And CDbl(Liczba2) > 0 And CDbl(Liczba3) > 0 And CDbl(Liczba4) > 0 Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If

    End Function

    Function ObliczAktualnaWageWydania() As Double

        Dim lvarReturn As Double

        For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
            lvarReturn = lvarReturn + CDbl(lvarRow.Cells("colIlosc").Value)
        Next

        Return lvarReturn

    End Function


    Public Sub SzukajDanych()

        Dim lvarIdPozycjiZlecenia As Integer
        Dim lvarI As Integer

        Wyczysc()
        lvarIdPozycjiZlecenia = clsInhTrSchemat.PobierzIdPozycjiZlecenia(mvarDbHolder, CInt(txtNumerSchematu.Text))
        If lvarIdPozycjiZlecenia = 0 Then
            MessageBox.Show("Nie ma schematu o takim numerze.", "WIREMET")
            txtNumerSchematu.SelectAll()
        Else
            mvarPozycjaZlecenia = New clsInhTrPozycjaZlecenia(lvarIdPozycjiZlecenia, mvarDbHolder, True)
            mvarZlecenie = New clsInhTrZlecenie
            mvarZlecenie.InformacjeZlecenia(mvarDbHolder, lvarIdPozycjiZlecenia)
            lblKlient.Text = mvarZlecenie.Klient.NazwaSkrocona
            lblMaterial.Text = mvarPozycjaZlecenia.GatunekMaterialu.NazwaAng
            lblStatus.Text = mvarPozycjaZlecenia.Status.Nazwa
            txtInfMaterial.Text = mvarPozycjaZlecenia.GatunekMaterialu.NazwaAng
            txtInfSchematWymiar.Text = mvarPozycjaZlecenia.Wymiar
            txtInfSchematIlosc.Text = mvarPozycjaZlecenia.Ilosc & " " & mvarPozycjaZlecenia.Jednostka.Jednostka
            txtInfTolDolna.Text = mvarPozycjaZlecenia.TolDolna
            txtInfTolGorna.Text = mvarPozycjaZlecenia.TolGorna
            txtInfWytrzymaloscMin.Text = mvarPozycjaZlecenia.WytrzymaloscMin
            txtInfWytrzymaloscMax.Text = mvarPozycjaZlecenia.WytrzymaloscMax
            txtInfWydluzenie.Text = mvarPozycjaZlecenia.Wydluzenie
            txtInfSzpula.Text = mvarPozycjaZlecenia.Pakowanie.Nazwa
            If mvarPozycjaZlecenia.PowierzonyMaterial Then
                txtInfMagazyn.Size = New Size(148, 41)
                txtInfUwagi.Size = New Size(149, 45)
                lblInfUwagi.Location = New Point(647, 41)
                txtInfUwagi.Location = New Point(684, 41)
                txtInfMagazyn.Text = mvarPozycjaZlecenia.Magazyn.Nazwa
                txtInfMagazyn.Text = txtInfMagazyn.Text & "(MAT. POWIERZ.)"
            Else
                txtInfMagazyn.Text = mvarPozycjaZlecenia.Magazyn.Nazwa
            End If
            txtInfUwagi.Text = mvarPozycjaZlecenia.Uwagi
            For Each lvarSchemat As clsInhTrSchemat In mvarPozycjaZlecenia.SchematyProdukcji
                If lvarSchemat.Id = CDbl(txtNumerSchematu.Text) Then

                    lblIlosc.Text = lvarSchemat.Ilosc & " kg"
                    If lvarSchemat.Uwagi <> String.Empty Then
                        lblUwagi.Text = lvarSchemat.Uwagi
                    Else
                        lblUwagi.Text = "-"
                    End If
                    lvarI = 0
                    dgvSchematInformacje.Rows.Clear()
                    For Each lvarMaterialProdukcyjny As clsInhTrMaterialProdukcyjny In lvarSchemat.MaterialProdukcyjny
                        lvarI += 1
                        dgvInformacje.Rows.Add(lvarI, lvarMaterialProdukcyjny.Material.Gatunek.NazwaAng, lvarMaterialProdukcyjny.Material.Wytop, lvarMaterialProdukcyjny.WymiarMin, lvarMaterialProdukcyjny.WymiarMax, lvarMaterialProdukcyjny.Wytrzymalosc, lvarMaterialProdukcyjny.Ilosc, lvarMaterialProdukcyjny.Pakowanie.Nazwa)
                        dgvInformacje.Rows(lvarI - 1).Tag = lvarMaterialProdukcyjny
                    Next
                End If
                If dgvInformacje.Rows.Count > 0 Then
                    dgvInformacje.ClearSelection()
                End If
                '-----------------------------INFORMACJE---------------------------------------------
                Dim lvarMaszyna As String
                txtSchematIlosc.Text = lvarSchemat.Ilosc & " kg"
                If lvarSchemat.Uwagi <> String.Empty Then
                    txtSchematUwagi.Text = lvarSchemat.Uwagi
                Else
                    txtSchematUwagi.Text = "-"
                End If
                lvarI = 0
                dgvSchematInformacje.Rows.Clear()
                For Each lvarPozycja As clsInhTrPozycjeSchematu In lvarSchemat.PozycjeSchematu
                    lvarI += 1
                    For Each lvar As clsInhTrMaszynaPozycjiSchematu In lvarPozycja.Maszyny
                        If lvarMaszyna <> String.Empty Then
                            lvarMaszyna = lvarMaszyna & ", "
                        End If
                        lvarMaszyna = lvarMaszyna & lvar.Maszyna.Nazwa
                    Next
                    If lvarI = 1 Then
                        lblWymiar.Text = lvarPozycja.WymiarWejsciowy
                        dgvSchematInformacje.Rows.Add(dgvSchematInformacje.Rows.Count + 1, "#", "#", lvarPozycja.WymiarWejsciowy, "#", "#", lvarPozycja.Pracownik.Nazwisko, lvarPozycja.Uwagi)
                        dgvSchematInformacje.Rows(dgvSchematInformacje.Rows.Count - 1).Tag = lvarPozycja
                        dgvSchematInformacje.Rows.Item(0).DefaultCellStyle.BackColor = Color.Lavender
                    Else
                        dgvSchematInformacje.Rows.Add(lvarI, lvarPozycja.GrupaMaszyny.Nazwa, lvarMaszyna, lvarPozycja.WymiarWejsciowy, lvarPozycja.WymiarKoncowy, lvarPozycja.Pakowanie.Nazwa, lvarPozycja.Pracownik.Nazwisko, lvarPozycja.Uwagi)
                        dgvSchematInformacje.Rows(lvarI - 1).Tag = lvarPozycja
                    End If
                    lvarMaszyna = String.Empty
                Next
                If dgvSchematInformacje.Rows.Count > 0 Then
                    dgvSchematInformacje.ClearSelection()
                End If
            Next
            '----------------------------------------------------------
            txtInfKlient.Text = mvarZlecenie.Klient.NazwaSkrocona
            txtInfTerminRealizacji.Text = CDate(mvarZlecenie.Termin).ToShortDateString
            lblWydanaIlosc.Text = CStr(ObliczAktualnaWageWydania())
            Dim lvarIndex As Integer = cmbGatunek.FindString(mvarPozycjaZlecenia.GatunekMaterialu.NazwaAng)
            cmbGatunek.SelectedIndex = lvarIndex
        End If

    End Sub


    Private Sub Zapisz()

        For Each lvarSchemat As clsInhTrSchemat In mvarPozycjaZlecenia.SchematyProdukcji
            If lvarSchemat.Id = CInt(txtNumerSchematu.Text) Then
                mvarDbHolder.BeginTrans()
                Dim lvarNowaPozycja As New clsInhTrMaterialProdukcyjny()
                With lvarNowaPozycja
                    .SchematId = lvarSchemat.Id
                    .WymiarMin = Replace(txtWymiarMin.Text, ",", ".")
                    .WymiarMax = Replace(txtWymiarMax.Text, ",", ".")
                    .Wytrzymalosc = Replace(txtWytrzymalosc.Text, ",", ".")
                    .Ilosc = Replace(txtIlosc.Text, ",", ".")
                    .PracownikId = mvarUzytkownik.Id
                    .PakowanieId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                    .Pakowanie.Nazwa = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                    .MaterialId = CType(cmbWytop.SelectedItem, clsMaterial).Id
                    .DataUtworzenia = Now
                    .Save(mvarDbHolder, mvarPozycjaZlecenia.StatusId, mvarPozycjaZlecenia.ZlecenieId, mvarPozycjaZlecenia.Id)
                End With
                'zmienienie statusow operacji, pozycji zlecenia oraz zlecenia
                Dim lvarWyzn As Boolean
                For Each lvarPozycjeSchematu As clsInhTrPozycjeSchematu In lvarSchemat.PozycjeSchematu
                    If lvarPozycjeSchematu.OpcjaPozycjiSchematuId = 1 Then
                        lvarPozycjeSchematu.StatusId = 4
                        lvarWyzn = True
                    End If
                    If lvarPozycjeSchematu.StatusId = 6 Then
                        lvarPozycjeSchematu.StatusId = 4
                        lvarWyzn = True
                    End If
                Next
                If mvarPozycjaZlecenia.StatusId = 5 Or mvarPozycjaZlecenia.StatusId = 1 Then
                    mvarPozycjaZlecenia.StatusId = 4
                    lvarWyzn = True
                End If
                If mvarZlecenie.InhStatusId = 5 Or mvarZlecenie.InhStatusId = 1 Then
                    Dim lvarWyzn1 As Boolean
                    lvarWyzn1 = clsInhTrZlecenie.ZmienStatus(mvarDbHolder, mvarPozycjaZlecenia.ZlecenieId, 4)
                End If
                If lvarWyzn Then
                    mvarPozycjaZlecenia.Save(mvarDbHolder)
                End If
                mvarDbHolder.CommitTrans()
                lvarSchemat.MaterialProdukcyjny.Add(lvarNowaPozycja)
                mvarMaterialProdukcyjnyId = lvarNowaPozycja.Id
                dgvInformacje.Rows.Add(dgvInformacje.Rows.Count + 1, CType(cmbGatunek.SelectedItem, clsGatunek).Nazwa, CType(cmbWytop.SelectedItem, clsMaterial).Wytop, txtWymiarMin.Text, txtWymiarMax.Text, txtWytrzymalosc.Text, txtIlosc.Text, CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa)
                dgvInformacje.Rows(dgvInformacje.Rows.Count - 1).Tag = lvarNowaPozycja

                dgvInformacje.ClearSelection()
                mvarChanged = False
                lblWydanaIlosc.Text = CStr(ObliczAktualnaWageWydania())
                Drukuj()
            End If
        Next

    End Sub

    Private Sub Zmien()

        For Each lvarSchemat As clsInhTrSchemat In mvarPozycjaZlecenia.SchematyProdukcji
            If lvarSchemat.Id = CDbl(txtNumerSchematu.Text) Then

                mvarMaterialProdukcyjny = New clsInhTrMaterialProdukcyjny
                mvarDbHolder.BeginTrans()
                With mvarMaterialProdukcyjny
                    .Id = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsTrMaterialProdukcyjny).Id
                    .SchematId = lvarSchemat.Id
                    .WymiarMin = Replace(txtWymiarMin.Text, ",", ".")
                    .WymiarMax = Replace(txtWymiarMax.Text, ",", ".")
                    .Wytrzymalosc = Replace(txtWytrzymalosc.Text, ",", ".")
                    .Ilosc = Replace(txtIlosc.Text, ",", ".")
                    .PracownikId = mvarUzytkownik.Id
                    .PakowanieId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                    .Pakowanie.Nazwa = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                    .MaterialId = CType(cmbWytop.SelectedItem, clsMaterial).Id
                    .DataUtworzenia = Now.Date
                    .Save(mvarDbHolder, mvarPozycjaZlecenia.StatusId, mvarPozycjaZlecenia.ZlecenieId, mvarPozycjaZlecenia.Id)
                End With
                mvarDbHolder.CommitTrans()

                With CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhTrMaterialProdukcyjny)
                    .SchematId = lvarSchemat.Id
                    .WymiarMin = Replace(txtWymiarMin.Text, ",", ".")
                    .WymiarMax = Replace(txtWymiarMax.Text, ",", ".")
                    .Wytrzymalosc = Replace(txtWytrzymalosc.Text, ",", ".")
                    .Ilosc = Replace(txtIlosc.Text, ",", ".")
                    .PracownikId = mvarUzytkownik.Id
                    .PakowanieId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                    .Pakowanie.Nazwa = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                    .MaterialId = CType(cmbWytop.SelectedItem, clsMaterial).Id
                    .DataUtworzenia = Now.Date
                End With

                With dgvInformacje.SelectedRows.Item(0)
                    .Cells("colGatunek").Value = CType(cmbGatunek.SelectedItem, clsGatunek).Nazwa
                    .Cells("colWytop").Value = CType(cmbWytop.SelectedItem, clsMaterial).Wytop
                    .Cells("colWymiarMin").Value = Trim(txtWymiarMin.Text)
                    .Cells("colWymiarMax").Value = Trim(txtWymiarMax.Text)
                    .Cells("colWytrzymalosc").Value = Trim(txtWytrzymalosc.Text)
                    .Cells("colIlosc").Value = Trim(txtIlosc.Text)
                    .Cells("colPakowanie").Value = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                End With

                mvarMaterialProdukcyjnyId = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsTrMaterialProdukcyjny).Id
                dgvInformacje.ClearSelection()
                WyczyscPowiazanieMaterialu()
                lblWydanaIlosc.Text = CStr(ObliczAktualnaWageWydania())
                mvarChanged = False
                Drukuj()
            End If
        Next

    End Sub

    Private Sub Drukuj()

        Try
            Dim etykietaProdukcjaReport As New EtykietaReport()
            etykietaProdukcjaReport.SetParameterValue("p_id", mvarMaterialProdukcyjnyId)
            etykietaProdukcjaReport.PrintToPrinter(1, True, 0, 0)

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub Usun()

        Dim lvarIdRodzic As String
        lvarIdRodzic = clsTrSzukanie.SzukajIdDrutu(mvarDbHolder, CType(dgvInformacje.SelectedRows(0).Tag, clsTrMaterialProdukcyjny).Id.ToString())

        If CDbl(lvarIdRodzic) <> -1 Then
            For Each lvarSchemat As clsInhTrSchemat In mvarPozycjaZlecenia.SchematyProdukcji
                If lvarSchemat.Id = CInt(txtNumerSchematu.Text) Then
                    Dim lvarIndexPoczatkowy As Integer
                    Dim lvarMaterialProdukcyjny As clsTrMaterialProdukcyjny
                    lvarIndexPoczatkowy = dgvInformacje.CurrentRow.Index
                    mvarDbHolder.BeginTrans()
                    lvarMaterialProdukcyjny = New clsTrMaterialProdukcyjny(CType(dgvInformacje.SelectedRows.Item(0).Tag, clsTrMaterialProdukcyjny).Id, mvarDbHolder, VAR_ERROR_HANDLER)
                    lvarMaterialProdukcyjny.Delete(mvarDbHolder, VAR_ERROR_HANDLER)
                    mvarDbHolder.CommitTrans()
                    dgvInformacje.Rows.Remove(dgvInformacje.CurrentRow)

                    For lvarI As Integer = lvarIndexPoczatkowy To dgvInformacje.Rows.Count - 1
                        dgvInformacje.Rows.Item(lvarI).Cells("colLp").Value = CInt(dgvInformacje.Rows.Item(lvarI).Cells("colLp").Value) - 1
                    Next
                    lblWydanaIlosc.Text = CStr(ObliczAktualnaWageWydania())
                    dgvInformacje.ClearSelection()
                End If
            Next
        Else
            MsgBox("Wybrany materiał jest już w produkcji, nie można go usunąć")
        End If
    End Sub

    Function SprawdzenieDanych() As Boolean

        If cmbGatunek.SelectedIndex = -1 Or cmbWytop.SelectedIndex = -1 Or cmbPakowanie.SelectedIndex = -1 Or txtWymiarMin.Text = String.Empty Or txtWymiarMax.Text = String.Empty Or txtWytrzymalosc.Text = String.Empty Or txtIlosc.Text = String.Empty Then
            MessageBox.Show("Podaj wszystkie dane?", "WIREMET")
            Return False
        Else
            If Not SprawdzLiczbeZmiennoprzecinkowa(txtWymiarMin.Text, txtWymiarMax.Text, txtWytrzymalosc.Text, txtIlosc.Text) Then
                MessageBox.Show("Podaj poprawnie dane!", "WIREMET")
                Return False
            Else
                If CType(cmbGatunek.SelectedItem, clsGatunek).Nazwa <> lblMaterial.Text Then
                    Select Case MsgBox("Wybrano inny gatunek materiału niż w zleceniu, kontynuować?", MsgBoxStyle.YesNo, "WIREMET")
                        Case MsgBoxResult.No
                            cmbGatunek.Focus()
                            Return False
                        Case MsgBoxResult.Yes
                            ' mvarWyznInnyGatunek = True
                            Return True
                    End Select
                Else
                    Return True
                End If
            End If
        End If

    End Function


    Private Sub dgvInformacje_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseClick

        If dgvInformacje.SelectedRows.Count > 0 Then
            mvarMaterialProdukcyjnyId = CType(dgvInformacje.SelectedRows(0).Tag, clsTrMaterialProdukcyjny).Id
        End If
  
    End Sub

    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick

        Dim lvarIndex As Integer

        If dgvInformacje.SelectedRows.Count > 0 Then

            'jeśli z wybranego drutu utworzono już inny drut to nie należy go usuwać

            WyczyscPowiazanieMaterialu()

            lvarIndex = cmbGatunek.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colGatunek").Value))
            cmbGatunek.SelectedIndex = lvarIndex

            lvarIndex = cmbWytop.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colWytop").Value))
            cmbWytop.SelectedIndex = lvarIndex
            txtWymiarMin.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colWymiarMin").Value)
            txtWymiarMax.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colWymiarMax").Value)
            txtWytrzymalosc.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colWytrzymalosc").Value)
            txtIlosc.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colIlosc").Value)

            lvarIndex = cmbPakowanie.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colPakowanie").Value))
            cmbPakowanie.SelectedIndex = lvarIndex
            mvarMaterialProdukcyjnyId = CType(dgvInformacje.SelectedRows(0).Tag, clsTrMaterialProdukcyjny).Id
        End If

    End Sub


    Private Sub cmdDodajWytop_Click(sender As Object, e As EventArgs) Handles cmdDodajWytop.Click

        If cmbGatunek.SelectedIndex <> -1 Then
            Dim lvarFrm As New frmMaterial(0, CType(cmbGatunek.SelectedItem, clsGatunek).Id)
            With lvarFrm
                .ShowDialog()
            End With
        Else
            Dim lvarFrm As New frmMaterial(0, 0)
            With lvarFrm
                .ShowDialog()
            End With
        End If
        If cmbGatunek.SelectedIndex <> -1 Then
            PobierzWszystkieWytopy(CType(cmbGatunek.SelectedItem, clsGatunek).Id)
        End If
    End Sub

    Private Sub cmdDodaj_Click(sender As Object, e As EventArgs) Handles cmdDodaj.Click
        If mvarChanged Then
            If SprawdzenieDanych() Then
                Zapisz()
            End If
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If
    End Sub

    Private Sub cmdZmien_Click(sender As Object, e As EventArgs) Handles cmdZmien.Click
        If mvarChanged Then
            If dgvInformacje.SelectedRows.Count <> 0 Then
                If SprawdzenieDanych() Then
                    Zmien()
                End If
            Else
                MessageBox.Show("Nie zaznaczono materiału do zmiany.", "WIREMET")
            End If
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If
    End Sub

    Private Sub cmdUsun_Click(sender As Object, e As EventArgs) Handles cmdUsun.Click
        If dgvInformacje.SelectedRows.Count <> 0 Then
            Select Case MsgBox("Czy usunąć dany materiał?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Usun()
            End Select
        Else
            MessageBox.Show("Nie zaznaczono materiału do usunięcia.", "WIREMET")
        End If
    End Sub

    Private Sub cmdWyczysc_Click(sender As Object, e As EventArgs) Handles cmdWyczysc.Click
        WyczyscPowiazanieMaterialu()
        dgvInformacje.ClearSelection()
    End Sub

    Private Sub cmdDrukuj_Click(sender As Object, e As EventArgs) Handles cmdDrukuj.Click

        If dgvInformacje.SelectedRows.Count > 0 Then
            Drukuj()
        Else
            MessageBox.Show("Wybierz materiał produkcyjny.", "WIREMET")
        End If

    End Sub

    Private Sub cmdInformacje_Click(sender As Object, e As EventArgs) Handles cmdInformacje.Click
        If Not mvarWyznInformacje Then
            Me.Size = New Size(913, 641)
            mvarWyznInformacje = True
            cmdInformacje.Image = My.Resources.Actions_arrow_up_icon
        Else
            Me.Size = New Size(913, 376)
            mvarWyznInformacje = False
            cmdInformacje.Image = My.Resources.Actions_arrow_down_icon
        End If
    End Sub


    Private Sub frmProdukcja_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
    End Sub


#Region "KeyPress"
    Private Sub txtNumerSchematu_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNumerSchematu.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            If txtNumerSchematu.Text <> String.Empty And IsNumeric(txtNumerSchematu.Text) Then
                SzukajDanych()
                cmbWytop.Focus()
            Else
                MessageBox.Show("Podaj numer.", "WIREMET")
            End If
        End If
    End Sub

    Private Sub cmbWytop_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbWytop.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWymiarMin.Focus()
        End If
    End Sub

    Private Sub txtWymiarMin_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtWymiarMin.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWymiarMax.Focus()
        End If
    End Sub

    Private Sub txtWymiarMax_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtWymiarMax.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWytrzymalosc.Focus()
        End If
    End Sub

    Private Sub txtWytrzymalosc_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtWytrzymalosc.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtIlosc.Focus()
        End If
    End Sub

    Private Sub txtIlosc_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtIlosc.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbPakowanie.Focus()
        End If
    End Sub

    Private Sub cmbPakowanie_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbPakowanie.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdDodaj.Focus()
        End If
    End Sub

#End Region

#Region "Changed"

    Private Sub txtIlosc_TextChanged(sender As Object, e As EventArgs) Handles txtIlosc.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbPakowanie_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbPakowanie.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub txtWymiarMin_TextChanged(sender As Object, e As EventArgs) Handles txtWymiarMin.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbWytop_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbWytop.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub cmbMaterial_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbGatunek.SelectedValueChanged
        cmbWytop.Items.Clear()
        If cmbGatunek.SelectedIndex <> -1 Then
            PobierzWszystkieWytopy(CType(cmbGatunek.SelectedItem, clsGatunek).Id)
        End If
    End Sub

    Private Sub txtWymiarMax_TextChanged(sender As Object, e As EventArgs) Handles txtWymiarMax.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtWytrzymalosc_TextChanged(sender As Object, e As EventArgs) Handles txtWytrzymalosc.TextChanged
        mvarChanged = True
    End Sub

#End Region

End Class